﻿using Ewell.Interface.Common.Model.Constant;
using Ewell.Interface.Common.Model.GateWay.Dto.InsuranceManager;
using Ewell.Interface.Common.Model.GateWay.Dto.Out;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ewell.Interface.Common.Model.GateWay.GateWayUriInfo
{
    public class MedInsurSettleDubboServe : GateWayUri
    {
        public override string url => "dubbo/cc.ewell.his.insurance.management.dubbo.external.MedInsurSettleDubboServe";
        /// <summary>
        /// 1-100023-01 根据日期查询医保结算单
        /// </summary>
        public GateWayMethod queryInsurSettlementByDate => new QueryInsurSettlementByDate(url);
        /// <summary>
        /// 1-100024-01 根据日期查询本地医保结算单对总账结果
        /// </summary>
        public GateWayMethod queryInsurAccountCheckResult => new QueryInsurAccountCheckResult(url);
        /// <summary>
        /// [1-100032-01]根据医保结算单标识列表更新医保结算单
        /// </summary>
        public GateWayMethod updateInsurSettlementById => new UpdateInsurSettlementById(url);
        /// <summary>
        /// 1-100026-01 根据医保结算单标识逻辑删除医保结算单信息
        /// </summary>
        public GateWayMethod deleteInsurSettlement => new DeleteInsurSettlement(url);

        /// <summary>
        /// 1-100004-01 根据条件查询HIS结算医保报销信息   
        /// </summary>
        /// <param name="param"></param>
        /// <param name="hisUser"></param>
        /// <returns></returns>
        public GateWayMethod queryPayMtInsurInfoByExample =>new QueryPayMtInsurInfoByExample(url);


        /// <summary>
        /// 1-100018-01 绑定HIS结算记录与医保结算记录关系（新HIS门诊异常退费、住院正算&取消结算后调用）
        /// </summary>
        /// <param name="param"></param>
        /// <param name="hisUser"></param>
        /// <returns></returns>
        public GateWayMethod updateRelationByIds => new UpdateRelationByIds(url);

    }

    public class UpdateRelationByIds : GateWayMethod
    {
        public UpdateRelationByIds(string baseUrl) : base(baseUrl) { }
        public override string methodName => "updateRelationByIds";
        public override string paramClass => "cc.ewell.his.insurance.management.upon.settle.SettleUpdateRelationRequest";
        public override DubboParamType paramType => DubboParamType.defaultParam;
        public override Type requestParamType => typeof(SettleUpdateRelationRequest);
        public override Type responseParamType => typeof(object);
        public override string desc => "1-100004-01 根据条件查询HIS结算医保报销信息";
    }

    public class QueryPayMtInsurInfoByExample : GateWayMethod
    {
        public QueryPayMtInsurInfoByExample(string baseUrl) : base(baseUrl){}
        public override string methodName => "queryPayMtInsurInfoByExample";
        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.QueryPayMtInsurInfoByExampleReq";
        public override DubboParamType paramType => DubboParamType.defaultParam;
        public override Type requestParamType => typeof(QueryPayMtInsurInfoByExampleReq);
        public override Type responseParamType => typeof(List<QueryPayMtInsurInfoByExampleResp>);
        public override string desc => "1-100004-01 根据条件查询HIS结算医保报销信息";
    }

    public class QueryInsurSettlementByDate : GateWayMethod
    {
        public QueryInsurSettlementByDate(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryInsurSettlementByDate";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.QueryInsurSettlementByDateReq";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(QueryInsurSettlementByDateReq);

        public override Type responseParamType => typeof(List<QueryInsurSettlementByDateResp>);

        public override string desc => "1-100023-01 根据日期查询医保结算单";
    }

    public class QueryInsurAccountCheckResult : GateWayMethod
    {
        public QueryInsurAccountCheckResult(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryInsurAccountCheckResult";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.QueryInsurAccountCheckResultReq";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(QueryInsurAccountCheckResultReq);

        public override Type responseParamType => typeof(InsurAccountCheckResp);

        public override string desc => "1-100024-01 根据日期查询本地医保结算单对总账结果";
    }

    public class UpdateInsurSettlementById : GateWayMethod
    {
        public UpdateInsurSettlementById(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "updateInsurSettlementById";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.UpdateInsurSettRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(UpdateInsurSettRequest);

        public override Type responseParamType => typeof(object);

        public override string desc => "[1-100032-01]根据医保结算单标识列表更新医保结算单";
    }

    public class DeleteInsurSettlement : GateWayMethod
    {
        public DeleteInsurSettlement(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "deleteInsurSettlement";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.DeleteInsurSettlementReq";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(DeleteInsurSettlementReq);

        public override Type responseParamType => typeof(object);

        public override string desc => "1-100026-01 根据医保结算单标识逻辑删除医保结算单信息";
    }
}
